package br.gov.mi.corporativo.dominio.boundary.rhmi.funcionario;

import java.util.Date;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import br.gov.mi.corporativo.dominio.entidade.rhmi.Funcionario;


@Path("funcionarios")
public class FuncionarioRestAdapter extends SpringBeanAutowiringSupport {
	
	@Autowired
	private FuncionarioEndPoint service;
	
	@GET
	@Produces({MediaType.APPLICATION_JSON})
	public Iterable<Funcionario> recuperarTodos(){
		return service.recuperarTodos();
	}
	
	@GET
	@Path("/id/{idFuncionario}")
	@Produces({MediaType.APPLICATION_JSON})
	public Funcionario recuperarPorIdFuncionario(@PathParam("idFuncionario")Long idFuncionario){
		return service.recuperarPorIdFuncionario(idFuncionario);
	}
	
	
	@GET
	@Path("/tratamento/{idTratamento}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorIdTratamento(@PathParam("idTratamento")Long idTratamento){
		return service.recuperarPorIdTratamento(idTratamento);
	}
	
	@GET
	@Path("/profissao/{idProfissao}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorIdProfissao(@PathParam("idProfissao")Long idProfissao){
		return service.recuperarPorIdProfissao(idProfissao);
	}
	
	@GET
	@Path("/municipionascimento/{idMunicipioNascimento}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorIdMunicipioNascimento(@PathParam("idMunicipioNascimento")Long idMunicipioNascimento){
		return service.recuperarPorIdMunicipioNascimento(idMunicipioNascimento);
	}
	
	@GET
	@Path("/matriculasiape/{nrMatriculaSiape}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorNrMatriculaSiape(@PathParam("nrMatriculaSiape")String nrMatriculaSiape){
		return service.recuperarPorNrMatriculaSiape(nrMatriculaSiape);
	}
	
	@GET
	@Path("/nome/{nmPessoaFisica}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorNmPessoaFisica(@PathParam("nmPessoaFisica")String nmPessoaFisica){
		return service.recuperarPorNmPessoaFisica(nmPessoaFisica);
	}
	
	@GET
	@Path("/dtnascimento/{dtNascimento}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorDtNascimento(@PathParam("dtNascimento")Date dtNascimento){
		return service.recuperarPorDtNascimento(dtNascimento);
	}
	
	@GET
	@Path("/sexo/{stSexo}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorStSexo(@PathParam("stSexo")Boolean stSexo){
		return service.recuperarPorStSexo(stSexo);
	}
	
	@GET
	@Path("/gruposanguineo/{csGrupoSanguineo}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorCsGrupoSanguineo(@PathParam("csGrupoSanguineo")String csGrupoSanguineo){
		return service.recuperarPorCsGrupoSanguineo(csGrupoSanguineo);
	}
	
	@GET
	@Path("/fatorrh/{csFatorRh}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorCsFatorRh(@PathParam("csFatorRh")String csFatorRh){
		return service.recuperarPorCsFatorRh(csFatorRh);
	}
	
	@GET
	@Path("/cor/{csCor}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorCsCor(@PathParam("csCor")String csCor){
		return service.recuperarPorCsCor(csCor);
	}
	
	@GET
	@Path("/estadocivil/{csEstadoCivil}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorCsEstadoCivil(@PathParam("csEstadoCivil")String csEstadoCivil){
		return service.recuperarPorCsEstadoCivil(csEstadoCivil);
	}
	
	@GET
	@Path("/nomepai/{nmPai}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorNmPai(@PathParam("nmPai")String nmPai){
		return service.recuperarPorNmPai(nmPai);
	}
	
	@GET
	@Path("/nomemae/{nmMae}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorNmMae(@PathParam("nmMae")String nmMae){
		return service.recuperarPorNmMae(nmMae);
	}
	
	@GET
	@Path("/loginmi/{dsLoginMi}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorDsLoginMi(@PathParam("dsLoginMi")String dsLoginMi){
		return service.recuperarPorDsLoginMi(dsLoginMi);
	}
	
	@GET
	@Path("/senhami/{dsSenha}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorDsSenha(@PathParam("dsSenha")String dsSenha){
		return service.recuperarPorDsSenha(dsSenha);
	}
	
	@GET
	@Path("/stativo/{stAtivo}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorStAtivo(@PathParam("stAtivo")String stAtivo){
		return service.recuperarPorStAtivo(stAtivo);
	}
	
	@GET
	@Path("/stregistro/{stRegistro}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Funcionario> recuperarPorStRegistro(@PathParam("stRegistro")String stRegistro){
		return service.recuperarPorStRegistro(stRegistro);
	}
	
}
